Skip to content

Nginx 开启 https 访问

Nginx 的 ssl 模块

在配置 ssl 证书之前,要确保你的 nginx 已经安装了 ssl 模块。这里先检查下自己是否存在 ssl 模块。RPM 包安装的默认都有。

shell
# 进入到目录的 sbin 目录
cd /usr/sbin/
# 注意这里是大写的V,小写的只显示版本号。如果打印出来的参数中存在 --with-http_ssl_module, 则已安装
./nginx -V

配置 ssl 证书

生成并自动续签证书参考:Nginx%20 使用%20acme.sh%20 生成和自动续签证书

需要压缩可参考:Nginx 开启 gzip 压缩

准备好证书,并放到指定目录:

shell
/etc/nginx/ssl/*.aday.fun.key
/etc/nginx/ssl/fullchain.cer

修改配置

shell
vim /etc/nginx/nginx.conf

内容参考

shell
# user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 1024m;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;

    server {
        listen 80;
        # 可以配置泛域名,也可以配置单个具体的域名
        server_name *.aday.fun;
        # 转发 http 到 https
        rewrite ^(.*)$ https://$host$1 permanent;
    }

    # 由于上面配置了泛域名,www.aday.fun 比较特殊,会自动跳转到第一个匹配的域名。
    # 所以需要禁用 www.aday.fun 访问,直接返回 444
    server {
        listen 443 ssl;
        server_name www.aday.fun;
        ssl_certificate /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key /etc/nginx/ssl/*.aday.fun.key;
        return 444;
    }

    server {
        listen       443 ssl;
        server_name  home.aday.fun;
        ssl_certificate /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key /etc/nginx/ssl/*.aday.fun.key;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    }
}

重启 Nginx

shell
./nginx -s reload
./nginx -s stop
./nginx